import axios from 'axios'
import { Toast } from 'vant'
import Cookies from 'js-cookie'

// 创建一个 Axios 实例
const instance = axios.create({
  baseURL: 'http://xwabrd.natappfree.cc/api', // 替换为你的 API 基础 URL
  timeout: 3000 // 请求超时时间
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么，比如检查 URL
    if (config.url && config.url.includes('/list')) {
      const authToken = getCookie('token') // 你的认证令牌
      // 如果 URL 包含特定的字符串，执行一些操作，比如修改请求头
      // config.headers.Authorization = store.state.token
      // 你可以在这里添加、删除或修改请求头
      config.headers.Authorization = authToken
    }
    if (config.url && config.url.includes('/category')) {
      const authToken = getCookie('token') // 你的认证令牌
      // 如果 URL 包含特定的字符串，执行一些操作，比如修改请求头
      // config.headers.Authorization = store.state.token
      // 你可以在这里添加、删除或修改请求头
      config.headers.Authorization = authToken
    }
    if (config.url && config.url.includes('/getVideoUrl')) {
      const authToken = getCookie('token') // 你的认证令牌
      // 如果 URL 包含特定的字符串，执行一些操作，比如修改请求头
      // config.headers.Authorization = store.state.token
      // 你可以在这里添加、删除或修改请求头
      config.headers.Authorization = authToken
    }

    // 返回配置对象，以便继续发送请求
    return config
  },
  function (error) {
    // 处理错误响应
    if (error.response) {
    // 服务器返回了一个状态码，并且状态码触发了错误处理
    // 你可以根据状态码来做不同的处理
      switch (error.response.status) {
        case 401:
          // 未授权，可以重定向到登录页面或显示登录表单
          console.error('401 Unauthorized')
          break
        case 403:
          // 禁止访问，可以显示一个禁止访问的页面或消息
          console.error('403 Forbidden')
          break
        case 404:
          // 未找到资源，可以显示一个友好的错误页面或消息
          console.error('404 Not Found')
          break
          // 其他状态码的处理...
        default:
          console.error('Other error:', error.response.status)
      }
    } else if (error.request) {
    // 请求已经发送，但没有收到响应
    // 这通常意味着网络错误或服务器没有响应
      console.error('No response received:', error.message)
    } else {
    // 其他错误，比如设置请求时发生的错误
      console.error('Error in setting up request:', error.message)
    }
    // 返回被拒绝的Promise，这样调用者可以捕获到这个错误
    return Promise.reject(error)
  }
)

function getCookie (name) {
  // 获取名为 'myCookie' 的 cookie 的值
  return Cookies.get(name)
}

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    const res = response.data
    console.log(res)
    if (res.code !== 1) {
      Toast(res.msg)
      return Promise.reject(res.msg)
    }
    return res
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default instance
